import { saveAs } from 'file-saver'
import myAxios from '@/request'

/**
 * 格式化文件大小
 * @param size
 */
export const formatSize = (size?: number) => {
  if (!size) return '未知'
  if (size < 1024) return size + ' B'
  if (size < 1024 * 1024) return (size / 1024).toFixed(2) + ' KB'
  return (size / (1024 * 1024)).toFixed(2) + ' MB'
}
/**
 * 下载图片
 * @param url 图片下载地址
 * @param fileName 要保存为的文件名
 */
export function downloadImage(url?: string, fileName?: string) {
  if (!url) {
    return
  }
  saveAs(url, fileName)
}

/**
 * 上传用户头像
 * @param file 要上传的文件
 * @returns 上传结果，包含图片URL等信息
 */
export async function uploadAvatar(file: File): Promise<API.UploadPictureResult> {
  const formData = new FormData()
  formData.append('file', file)

  try {
    const response = await myAxios.post<API.BaseResponseUploadPictureResult>('/user/upload', formData, {
      headers: {
        'Content-Type': 'multipart/form-data',
      },
    })

    if (response.data.code === 0 && response.data.data) {
      return response.data.data
    } else {
      throw new Error(response.data.message || '上传失败')
    }
  } catch (error) {
    console.error('上传头像失败:', error)
    throw error
  }
}

